package cn.iocoder.yudao.module.infra.controller.rpc.ocr;

import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.infra.api.ocr.OcrConfigApi;
import cn.iocoder.yudao.module.infra.dal.dataobject.ocr.OcrConfigDO;
import cn.iocoder.yudao.module.infra.service.ocr.OcrConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;

/**
 * OCR 配置 API 实现类
 *
 * @author 芋道源码
 */
@RestController
@Validated
@Slf4j
public class OcrConfigApiImpl implements OcrConfigApi {

    @Resource
    private OcrConfigService ocrConfigService;

    @Override
    public CommonResult<Long> getAvailableOcrConfigId(Integer status) {
        log.debug("获取可用的OCR配置ID，status: {}", status);
        
        try {
            // 使用缓存优化的服务方法，获取第一个可用的配置
            OcrConfigDO config = ocrConfigService.getAvailableOcrConfig(status);
            if (config != null) {
                log.debug("找到可用的OCR配置，ID: {}, name: {}", config.getId(), config.getName());
                return success(config.getId());
            } else {
                log.debug("未找到可用的OCR配置，status: {}", status);
                return success(null);
            }
        } catch (Exception e) {
            log.error("获取可用的OCR配置失败，status: {}", status, e);
            return CommonResult.error(500, "获取OCR配置失败: " + e.getMessage());
        }
    }

}